﻿namespace SoftwareConsulting.BI11.NumericalMethods.Iterations
{
    /// <summary>
    /// Класс ряда незавершенной гамма-функции
    /// </summary>
    public class IncompleteGammaFunctionSeries : InifiniteSeries
    {	    
        private double _alpha;//параметр ряда	    
        private double _sum;//вспомогательная сумма

        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="alpha">параметр ряда</param>
        public IncompleteGammaFunctionSeries(double alpha)
        {
            _alpha = alpha;
        }

        /// <summary>
        /// Вычисляет указанное слагаемое ряда и сохраняет в соответствующей переменной
        /// </summary>
        /// <param name="termIndex"></param>
        protected override void ComputeTermAt(int termIndex)
        {            
            _sum += 1;
            LastTerm *= Argument / _sum;
        }

        /// <summary>
        /// Инициализирует значение и возвращает нулевое слагаемое
        /// </summary>
        /// <returns></returns>
        protected override double InitialValue()
        {
            LastTerm = 1 / _alpha;
            _sum = _alpha;
            return LastTerm;
        }
    }
}
